CSRF Protection, XSS Protection

Web Development - জ্যাঙ্গো (Django) - Django Security এবং Best Practices
214

Django একটি নিরাপদ ওয়েব ফ্রেমওয়ার্ক, যা আপনার অ্যাপ্লিকেশনকে নিরাপদ রাখতে অনেক ধরনের বিল্ট-ইন সিকিউরিটি ফিচার প্রদান করে। এর মধ্যে দুটি গুরুত্বপূর্ণ সিকিউরিটি ব্যবস্থা হল CSRF Protection এবং XSS Protection। এই দুইটি নিরাপত্তা ব্যবস্থা Django অ্যাপ্লিকেশনের সুরক্ষা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।


CSRF Protection (Cross-Site Request Forgery)

CSRF (Cross-Site Request Forgery) আক্রমণ হলো একটি ধরণের আক্রমণ যেখানে একজন দুর্বৃত্ত ব্যবহারকারী একটি ভিকটিমের অ্যাকাউন্টে অপারেশন (যেমন ফর্ম সাবমিট, ডেটা পরিবর্তন) সম্পন্ন করতে পারে, যা তার পক্ষে অনুমোদিত নয়। এই ধরনের আক্রমণকে প্রতিহত করার জন্য Django একটি শক্তিশালী CSRF Protection প্রদান করে।

১. CSRF Protection কীভাবে কাজ করে?

Django তে CSRF আক্রমণ প্রতিরোধ করতে CSRF টোকেন ব্যবহৃত হয়। এটি একটি সিকিউরিটি মেকানিজম, যা নিশ্চিত করে যে একটি HTTP রিকোয়েস্ট আসলে ব্যবহারকারীর কাছ থেকে এসেছে, এটি একটি বৈধ রিকোয়েস্ট। Django প্রতিটি ফর্মের জন্য একটি CSRF টোকেন জেনারেট করে, এবং এই টোকেনকে ফর্মে ইনক্লুড করতে হয়। টোকেনটি ব্যবহারকারীকে সঠিকভাবে যাচাই করার জন্য ব্যবহার করা হয়।

২. CSRF টোকেন ব্যবহার

CSRF টোকেন ইনক্লুড করার জন্য ফর্ম টেমপ্লেটে {% csrf_token %} ট্যাগ ব্যবহার করা হয়। এটি ফর্মের মধ্যে একটি হিডেন ইনপুট ফিল্ড তৈরি করবে, যা ফর্ম সাবমিট করার সময় CSRF টোকেনটি সাপ্লাই করবে।

<!-- form_template.html -->
<form method="POST">
  {% csrf_token %}
  <label for="title">Post Title</label>
  <input type="text" name="title">
  <button type="submit">Submit</button>
</form>

এখানে:

  • {% csrf_token %}: এটি একটি Django টেমপ্লেট ট্যাগ, যা CSRF টোকেনকে ইনক্লুড করবে।
  • CSRF টোকেনটি রিকোয়েস্টে অন্তর্ভুক্ত হবে, এবং Django তা যাচাই করবে, যাতে এটি নিশ্চিত হয় যে এটি বৈধ রিকোয়েস্ট।

৩. CSRF Protection নিষ্ক্রিয় করা

কিছু ক্ষেত্রে আপনি CSRF প্রোটেকশন নিষ্ক্রিয় করতে পারেন, যেমন API রিকোয়েস্টে বা নির্দিষ্ট কিছু ভিউতে। এর জন্য @csrf_exempt ডেকোরেটর ব্যবহার করা হয়।

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
    # CSRF প্রোটেকশন থেকে মুক্ত ভিউ
    return HttpResponse("No CSRF Protection")

এটি শুধুমাত্র সেই ভিউতে CSRF প্রোটেকশন নিষ্ক্রিয় করবে, এবং অন্যান্য ভিউয়ে CSRF প্রোটেকশন চলতে থাকবে।


XSS Protection (Cross-Site Scripting)

XSS (Cross-Site Scripting) একটি নিরাপত্তা দুর্বলতা যেখানে আক্রমণকারী ব্যবহারকারীর ব্রাউজারে ক্ষতিকর স্ক্রিপ্ট (যেমন JavaScript) ইনজেক্ট করে। এই স্ক্রিপ্টটি ব্যবহারকারীর ডেটা চুরি করতে বা ক্ষতিগ্রস্ত করতে পারে। Django তে XSS আক্রমণ প্রতিরোধের জন্য একটি শক্তিশালী সিস্টেম রয়েছে, যা ডিফল্টভাবে সমস্ত টেমপ্লেট ভেরিয়েবল স্যানিটাইজ করে এবং অযাচিত স্ক্রিপ্ট চলতে দেয় না।

১. Django এর সুরক্ষা বৈশিষ্ট্য

Django তে টেমপ্লেট সিস্টেম স্বয়ংক্রিয়ভাবে সমস্ত ইউজার ইনপুটকে HTML এনকোড করে থাকে, যার ফলে স্ক্রিপ্ট ইনজেকশন প্রতিরোধ করা যায়। উদাহরণস্বরূপ, Django টেমপ্লেট ইঞ্জিন ব্যবহারকারীর ইনপুটকে <, >, & এবং অন্যান্য HTML সত্ত্বারূপে কনভার্ট করে, যা স্ক্রিপ্ট ইনজেকশনকে প্রতিরোধ করে।

<!-- user_input_template.html -->
<p>{{ user_input }}</p>

এখানে:

  • {{ user_input }}: এটি ইউজারের ইনপুট, যা স্বয়ংক্রিয়ভাবে Django HTML স্যানিটাইজ করবে এবং সুরক্ষিত আউটপুট প্রদান করবে।
  • যদি ইউজার কোনো ক্ষতিকর স্ক্রিপ্ট ইনপুট প্রদান করে, Django তা এনকোড করবে, যেমন <script> কে <script> এ কনভার্ট করবে, যাতে এটি ব্রাউজারে এক্সিকিউট না হয়।

২. XSS আক্রমণ প্রতিরোধে টেমপ্লেট সুরক্ষা

Django টেমপ্লেট সিস্টেম সবসময় ইউজার ইনপুট স্যানিটাইজ করার মাধ্যমে XSS আক্রমণ প্রতিরোধ করে। তবে, যদি আপনি ইচ্ছাকৃতভাবে HTML বা JavaScript কোড চালাতে চান (যা কখনোই নিরাপদ নয়), তখন |safe ফিল্টার ব্যবহার করতে পারেন।

<!-- warning: dangerous! -->
<p>{{ user_input|safe }}</p>

এটি ব্যবহারকারীর ইনপুটকে unsafe করে তোলে এবং কোনো HTML বা স্ক্রিপ্ট এন্ট্রি সরাসরি ব্রাউজারে রেন্ডার করবে, যা XSS আক্রমণের জন্য ঝুঁকি তৈরি করতে পারে।

৩. XSS এবং Content Security Policy (CSP)

Django তে XSS আক্রমণ থেকে নিরাপদ থাকতে Content Security Policy (CSP) ব্যবহার করা যেতে পারে। CSP একটি সিকিউরিটি ফিচার যা ব্রাউজারকে নির্দেশ দেয় কোন স্ক্রিপ্ট বা রিসোর্স সাইট থেকে লোড করা যেতে পারে।

CSP সেটআপ করতে আপনাকে django-csp প্যাকেজ ইনস্টল করতে হবে এবং কিছু কনফিগারেশন করতে হবে।

pip install django-csp

তারপর, settings.py তে CSP সেটআপ করুন:

# settings.py
INSTALLED_APPS = [
    'csp',
    # অন্যান্য অ্যাপস...
]

MIDDLEWARE = [
    'csp.middleware.CSPMiddleware',
    # অন্যান্য মিডলওয়্যার...
]

CSP_DEFAULT_SRC = ("'self'",)
CSP_SCRIPT_SRC = ("'self'", "'unsafe-inline'")

এটি আপনার অ্যাপ্লিকেশনকে XSS আক্রমণের থেকে আরও সুরক্ষিত করবে, কারণ এটি কেবল নির্দিষ্ট উত্স (source) থেকে স্ক্রিপ্ট লোড করার অনুমতি দেবে।


সারাংশ

  • CSRF Protection Django তে প্রতিরোধ করে Cross-Site Request Forgery আক্রমণ। এটি CSRF টোকেন ব্যবহার করে নিশ্চিত করে যে রিকোয়েস্ট আসল ব্যবহারকারীর কাছ থেকে এসেছে।
  • XSS Protection Django তে ইনপুট স্যানিটাইজেশনের মাধ্যমে Cross-Site Scripting আক্রমণ প্রতিরোধ করা হয়, এবং HTML ইনপুটকে সঠিকভাবে এনকোড করা হয়, যাতে আক্রমণকারীরা স্ক্রিপ্ট ইনজেক্ট করতে না পারে।

এই দুটি সিকিউরিটি ফিচার Django অ্যাপ্লিকেশনকে নিরাপদ রাখে এবং অ্যাটাকারের আক্রমণ থেকে রক্ষা করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...